package com.bwie.bwedu.ui;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;

/**
 * Created by zhang on 2016/7/18.
 */

/**
 * 自定义倒计时文本控件
 *
 * @author Administrator
 */
public class TimeTextView extends TextView implements Runnable {
    public String[] times;
    public int mday, mhour, mmin, msecond;//天，小时，分钟，秒
    public boolean run = false; //是否启动了
    public TimeTextView(Context context) {
        super(context);
    }
    public TimeTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public TimeTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    //自定义方法------------
    public String[] getTimes() {

        return times;
    }

    //自定义方法--------------
    public void setTimes(String[] times) {
        this.times = times;
        mday = Integer.parseInt(times[0]);
        mhour =Integer.parseInt(times[1]);
        mmin = Integer.parseInt(times[2]);
        msecond = Integer.parseInt(times[3]);
    }

    /**
     * 倒计时计算
     */
    public void ComputeTime() {
        msecond--;
        if (msecond < 0) {
            mmin--;              //小于一秒，分钟减一，重新给秒钟赋值为59分
            msecond = 59;
            if (mmin < 0) {       //小于一分，时钟减一，重新给分钟赋值为59分
                mmin = 59;
                mhour--;
                if (mhour < 0) {
                    // 倒计时结束
                    mhour = 24;
                    mday--;
                }
            }

        }
    }
//    然后要实现当前线程的开始和终止，相关实现是下面几个函数：
    public boolean isRun() {
        return run;
    }
    public void beginRun() {
        this.run = true;
        run();
    }
    public void stopRun(){
        this.run = false;
    }
    @Override
    public void run() {
        //标示已经启动
        if(run){
            ComputeTime();
            String strTime= mday +"天:"+ mhour+"小时:"+ mmin+"分钟:"+msecond+"秒";
            this.setText(strTime);
            //内部封装handler,执行---------------mHandler.postDelayed
//            方法postDelayed的作用是延迟多少毫秒后开始运行
// 而removeCallbacks方法是删除指定的Runnable对象，使线程对象停止运行。
            postDelayed(this,1000);
        }else {
            removeCallbacks(this);
        }
    }
}
